Find unique triplets in the list (a+b+c=0)ΒΆ

Find unique triplets whose three elements gives
the sum of zero from an array of N integers.
def three_sum(nums):

  result = []
  nums.sort()

  for i in range(len(nums)-2):

    if i > 0 and nums[i] == nums[i-1]:
      continue

    l, r = i + 1, len(nums)-1

    while l < r:
        sum = nums[i] + nums[l] + nums[r]
        if sum > 0:
          r -= 1
        elif sum < 0:
            l += 1
        else:
            # found three sum
            result.append((nums[i], nums[l], nums[r]))
            # remove duplicates
            while l < r and nums[l] == nums[l+1]:
                l + =1
                while l < r and nums[r] == nums[r-1]:
                    r -= 1
                    l += 1
                    r -= 1
                return result

x = [1, -6, 4, 2, -1, 2, 0, -2, 0 ]
print(three_sum(x))

Output:

[(-6, 2, 4)]